// generate-readme.cjs
const fs = require('fs');
const path = require('path');

const pkgPath = path.join(process.cwd(), 'package.json');
if (!fs.existsSync(pkgPath)) {
  console.error('package.json not found in project root.');
  process.exit(1);
}
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));

function formatDeps(deps) {
  if (!deps || Object.keys(deps).length === 0) return 'None';
  return Object.entries(deps).map(([k,v]) => `- ${k}: \`${v}\``).join('\n');
}

// 添加脚本描述映射
const scriptDescriptions = {
  'dev': '启动开发服务器',
  'build': '构建生产版本',
  'lint': '检查代码规范',
  'lint:fix': '自动修复代码规范问题',
  'prettier': '检查代码格式',
  'prettier:fix': '自动格式化代码',
  'preview': '预览生产构建',
  'prepare': '初始化 husky Git hooks',
  'generate-readme': '自动生成项目 README 文档'
};

function formatScripts(scripts) {
  if (!scripts || Object.keys(scripts).length === 0) return 'None';
  return Object.entries(scripts).map(([name, command]) => {
    const description = scriptDescriptions[name] || '自定义脚本';
    return `- **${name}**: \`${command}\`\n  - ${description}`;
  }).join('\n');
}

// 更详细的项目结构描述
const detailedStructure = `
\`\`\`
project/
├── public/                  # 静态资源目录
│   ├── favicon.ico         # 网站图标
│   └── index.html          # HTML 模板文件
├── src/                    # 源代码目录
│   ├── assets/             # 静态资源（图片、字体等）
│   ├── components/         # 公共组件
│   ├── pages/              # 页面组件
│   ├── routes/             # 路由配置
│   ├── stores/             # 状态管理
│   ├── styles/             # 全局样式文件
│   ├── utils/              # 工具函数
│   ├── App.tsx             # 根组件
│   └── main.tsx            # 入口文件
├── .husky/                 # Git hooks 配置
├── .vscode/                # VSCode 配置
├── node_modules/           # 依赖包目录
├── .eslintrc.cjs           # ESLint 配置文件
├── .prettierrc             # Prettier 配置文件
├── .gitignore              # Git 忽略配置
├── package.json            # 项目配置文件
├── tsconfig.json           # TypeScript 配置
├── vite.config.ts          # Vite 配置文件
└── README.md               # 项目说明文档
\`\`\`
`;

const md = [
`# ${pkg.name || 'Project Name'}`,
'',
pkg.description || '这是一个基于现代前端技术栈的项目。',
'',
pkg.repository && pkg.repository.url ? `**仓库地址**: ${pkg.repository.url}` : '',
'',
pkg.homepage ? `**项目主页**: ${pkg.homepage}` : '',
'',
`## 项目概述`,
'',
'本项目是一个使用 React 19、Vite 7 和 Ant Design 5 构建的现代化前端应用。项目采用模块化架构设计，支持热重载开发、代码规范检查和自动化构建。',
'',
`## 快速开始`,
'',
'安装项目依赖:',
'',
'```bash',
'npm install',
'```',
'',
'启动开发服务器:',
'',
'```bash',
'npm run dev',
'```',
'',
'构建生产版本:',
'',
'```bash',
'npm run build',
'```',
'',
`## 可用脚本`,
'',
pkg.scripts && Object.keys(pkg.scripts).length ? formatScripts(pkg.scripts) : '',
'',
`## 依赖说明`,
'',
'### 生产依赖',
'项目运行所需的核心依赖包：',
'',
formatDeps(pkg.dependencies),
'',
'### 开发依赖',
'项目开发和构建所需的工具包：',
'',
formatDeps(pkg.devDependencies),
'',
`## 技术栈`,
'',
'- **框架**: React 19',
'- **UI库**: Ant Design 5',
'- **构建工具**: Vite 7',
'- **路由**: React Router 7',
'- **状态管理**: Zustand 5',
'- **样式**: TailwindCSS + Less',
'- **代码规范**: ESLint + Prettier',
'- **Git钩子**: Husky + lint-staged',
'- **语言**: TypeScript',
'',
`## 项目结构`,
'',
detailedStructure,
'',
`## 开发规范`,
'',
'### 代码规范',
'- 使用 ESLint 进行代码检查',
'- 使用 Prettier 进行代码格式化',
'- 提交代码前会自动执行 lint-staged 检查',
'',
'### Git 提交规范',
'- 使用 conventional commits 规范',
'- 提交前会自动运行代码检查',
'- 自动化生成 CHANGELOG',
'',
`## 环境配置`,
'',
'项目支持多种环境配置:',
'- 开发环境 (development)',
'- 测试环境 (test)',
'- 生产环境 (production)',
'',
'通过设置 `NODE_ENV` 环境变量来指定运行环境。',
'',
pkg.license ? `## 许可证\n\n本项目采用 ${pkg.license} 许可证。` : ''
].filter(Boolean).join('\n');

fs.writeFileSync(path.join(process.cwd(), 'README.md'), md, 'utf8');
console.log('README.md generated/updated from package.json');